package cn.demoncat.util.mall.ehsy.entity;

import cn.demoncat.util.lang.StringUtil;
import cn.demoncat.util.lang.constant.StatusConstant;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 获取商品图片信息
 *
 * @author 延晓磊
 * @since 2022年07月25日
 */
@Data
public class EhsySkuImageResult extends EhsyResult{

    private List<Body> result;

    @Data
    public static class Body{

        // 商品编号
        private String sku;
        // 图片
        private List<Pic> skuPic;

        @Data
        public static class Pic{

            // 图片地址：将图片地址按大、中、小的顺序，以逗号分隔，至少有中图和小图
            private String path;
            // 是否主图：1是，0否
            private String isPrimary;
            // 排序：主图为null
            private Integer orderSort;

        }

        /**
         * 转换为二维数组
         *
         * @return [主[大,中,小],副...]
         *
         * @author 延晓磊
         * @since 2022年07月27日
         */
        public List<List<String>> toPicList(){
            if (CollectionUtils.isEmpty(this.getSkuPic())) {
                return new ArrayList<>();
            }else {
                return this.getSkuPic().stream().sorted((a, b) -> {
                    // 主图优先
                    if (StatusConstant.Common.isYes(a.getIsPrimary())) {
                        return -1;
                    } else if (StatusConstant.Common.isYes(b.getIsPrimary())) {
                        return 1;
                    } else {
                        return a.getOrderSort().compareTo(b.getOrderSort());
                    }
                }).map(o -> {
                    // 如果没有大图，将中图复制为大图
                    List<String> split = StringUtil.splitToList(o.getPath());
                    if (split.size() == 2) {
                        split.add(0, split.get(0));
                    }
                    return split;
                }).collect(Collectors.toList());
            }
        }

    }
}


